package com.designpatterns.proxypattern.staticproxy;

/**
 * @author yonghyun
 * 代理对象，持有被代理对象的引用，控制对被代理对象的访问，必要时可将请求转发给被代理对象
 */
public class HelloWorldProxy implements HelloWorld {
    /**
     * 被代理对象的引用
     */
    private HelloWorld helloWorld;

    public HelloWorldProxy() {
    }

    public HelloWorldProxy(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }

    /**
     * 代理方法的逻辑
     */
    public void sayHello() {
        System.out.println("加入代理逻辑");
        System.out.println("调用真实对象之前的逻辑");
        helloWorld.sayHello();
        System.out.println("调用真实对象之后的逻辑");
    }

    public HelloWorld getHelloWorld() {
        return helloWorld;
    }

    public void setHelloWorld(HelloWorld helloWorld) {
        this.helloWorld = helloWorld;
    }
}
